import axios from "axios";
import { ElMessage } from 'element-plus';
import router from "@/router";
// instance.get('/api/vlog/v1/blogs')
var instance = axios.create({
    // 后端的URL 地址，沿用vite配置
    // 比如前段是http://localhost:5173/login
    // http://localhost:5173/api/v1/vblog
    // vite 会进行拦截，将/api/v1 前面的替换成vite配置 http://127.0.0.1:9999/api/v1/vblog
    baseURL: '',
    // 超时时间5秒
    timeout:5000,
    // 后端Gin 使用的Bind函数，而不是BindJson，补充请求Data是哪个格式
    headers:{'Content-Type': 'application/json'}
});
// 请求拦截器
// instance.interceptors.request
// 请求拦截器
instance.interceptors.request.use(
    (config) => {
        // 假设token存储在localStorage中，也可以存储在Vuex store或其他地方
        const token = localStorage.getItem('token');
        if (token) {
            // 将token设置在headers中
            config.headers['Authorization'] = `Bearer ${token}`;
        }
        return config;
    },
    (error) => {
        // 处理请求错误
        return Promise.reject(error);
    }
);

// 通过相应拦截器统一处理异常
instance.interceptors.response.use(
    (resp) =>{
        console.log(resp)
        return resp.data
    },
    (error)=>{

        let msg
        console.log("error = ",error)
        if (error.response.data && error.response.data.message) {
            // 通用错误处理
            msg = error.response.data.message
        }
        console.log("msg1 = ",msg)
        // 处理自定义异常
        switch (error.response.data.code){
            // token 过期
            case 500:
                localStorage.removeItem('token')
                router.push({name:'login'})
                break
        }
        // 直接把异常信息提示出来
        ElMessage.error(`${msg}`)
        // 是否要注入error，业务页面需要拿到异常
        return Promise.reject(error.response.data)
    },
)
export default instance
